package com.Ian.homework;

import java.util.List;
import java.util.TreeMap;

/**
 * 这个题的解题思路有很多
 * 比如用最短的循环减位的和最长的一一比较
 * 也可以通过构建二维数组，查找最长连通区间
 * 有点算法基础的可以考虑AC自动机 可参看https://www.cnblogs.com/nullzx/p/7499397.html
 * 或者参看Github中优化后的AC自动机
 */
public class LongString {
    public static void main(String[] args) {
        //Github中的方法
        System.out.println("-------------github Func-------------------");
        TreeMap<String, String> map = new TreeMap<String, String>();
        String[] keyArray = new String[]
                {
                        "Yang",
                        "Shu",
                        "Wen",
                        "Test",
                        "杨书文",
                        "Yangshuwen"
                };
        for (String key : keyArray)
        {
            map.put(key, key);
        }
        // Build an AhoCorasickAutomation
        AhoCorasickAutomation<String> acdat = new AhoCorasickAutomation<String>();
        acdat.build(map);
        // Test it
        final String text = "YangyangShushuWenwenTesttest杨书文";
        List<AhoCorasickAutomation.Hit<String>> wordList = acdat.parseText(text);
        System.out.println(wordList);
    }
}
